设置表单令牌(1.3.1+)

setToken('令牌名称', '令牌生成规则')

1.3.1开始支持

1.3.1开始,用ZBuilder生成的表单将默认带有表单令牌,能起到CSRF防御作用。

使用令牌验证

在你的验证规则中,添加token验证规则即可,例如,如果使用的是验证器的话,可以改为:

  1. protected $rule = [
  2. 'name' => 'require|max:25|token',
  3. 'email' => 'email',
  4. ];

或者

  1. protected $rule = [
  2. 'name' => 'require|max:25',
  3. 'email' => 'email',
  4. '__token__' => 'token',
  5. ];

全局设置

如果所有表单都不需要开启表单令牌,可以在

\application\extra\zbuilder.php 修改form_token_namefalse

单独关闭表单令牌

如果仅需要在某个表单关闭表单令牌,可以在创建ZBuilder表单时,这样设置

  1. ->setToken(false)

修改表单令牌名称

如果你的令牌名称不是__token__,可以自己自定义,比如:

  1. ->setToken('__hash__')

那么验证器规则就需要修改为:

  1. protected $rule = [
  2. 'name' => 'require|max:25|token:__hash__',
  3. 'email' => 'email',
  4. ];

或者

  1. protected $rule = [
  2. 'name' => 'require|max:25',
  3. 'email' => 'email',
  4. '__hash__' => 'token:__hash__',
  5. ];

自定义令牌生成规则

如果需要自定义令牌生成规则,则直接设置规则名称,如:

  1. ->setToken('', 'sha1')

或者同时自定义名称和生成规则

  1. ->setToken('__hash__', 'sha1')